Webframeworkk/ASP.NET Core/xUnit

Dieses Tutorial gibt dir einen Überblick über Unit Testing, Best Practices und die Verwendung des xUnit-Frameworks in .NET.

1. Einführung in Unit Testing

Unit Testing (Modultests) ist eine Softwareentwicklungspraxis, bei der einzelne Einheiten (meist Klassen oder Methoden) isoliert vom Rest der Anwendung getestet werden.

Vorteile von Unit Testing

  • Fehler frühzeitig finden: Probleme werden bereits im Entwicklungszyklus erkannt und behoben.
  • Sicher Refactoren: Änderungen am Code können mit Vertrauen vorgenommen werden, da Tests sofort melden, wenn etwas kaputt geht.
  • Besseres Design: Es führt zu modularerem und lose gekoppeltem Code.
  • Lebendige Dokumentation: Tests zeigen, wie der Code verwendet werden soll.

2. Das xUnit Framework

xUnit ist ein populäres Open-Source-Framework für Unit Testing in .NET. Es bietet Attribute und Assertions, um Tests einfach zu organisieren.

Warum xUnit?

  • Erweiterbarkeit: Erlaubt benutzerdefinierte Attribute und Assertions.
  • Community: Große Community mit viel Support.
  • Integration: Nahtlose Einbindung in Visual Studio, ReSharper und Build-Server.
  • Performance: Bekannt für Geschwindigkeit und Effizienz.
  • Kombination mit Moq: Lässt sich ideal mit dem Mocking-Framework "Moq" kombinieren.

3. Best Practices für Unit Testing

Um effektive Tests zu schreiben, solltest du folgende Regeln beachten:

  • Isolation: Teste jede Einheit isoliert. Nutze Mocking-Frameworks (wie Moq oder NSubstitute), um Abhängigkeiten zu simulieren.
  • AAA-Muster (Arrange-Act-Assert):
    • Arrange: Bereite die Testdaten und Eingaben vor.
    • Act: Führe den zu testenden Code aus.
    • Assert: Überprüfe, ob das Ergebnis den Erwartungen entspricht.
  • Ein Assert pro Test: Konzentriere dich darauf, pro Test nur ein spezifisches Verhalten zu validieren.
  • Klare Benennung: Verwende aussagekräftige Namen für Testklassen und Methoden.
  • Test-Doubles: Nutze Mocks, Stubs oder Fakes, um Abhängigkeiten zu kontrollieren.
  • Randfälle testen: Vergiss nicht, Grenzwerte und ungewöhnliche Eingaben zu prüfen.
  • Keine externen Systeme: Teste in Unit Tests keine Datenbanken, Dateisysteme oder Netzwerkdienste direkt (Mocking!).
  • Schnelle Tests: Unit Tests sollten in Millisekunden laufen.

4. Praktische Test-Szenarien

Hier sind Beispiele für Testlogik, die du mit xUnit umsetzen kannst:

Country Service Tests

Die folgenden Szenarien sollten für den Country-Service abgedeckt werden:

  • AddCountry:
    • Validierung des CountryAddRequest (darf nicht null sein).
    • Konvertierung in den Typ Country.
    • Generierung einer neuen ID.
    • Hinzufügen zur Liste und Rückgabe der Response.
  • GetAllCountries:
    • Konvertierung der Liste in CountryResponse.
  • GetCountryByCountryID:
    • Prüfung der ID auf null.
    • Suche in der Liste und Rückgabe des Ergebnisses.

Person Service Tests

Für den Person-Service sind ähnliche Tests sinnvoll:

  • AddPerson: Validierung, Konvertierung, ID-Generierung und Speicherung.
  • GetPersonByPersonID: Suche anhand der GUID.
  • GetAllPersons: Rückgabe aller Personen als Response-Objekte.
  • GetFilteredPersons: Suche basierend auf Suchbegriffen (searchBy, searchString).
  • GetSortedPersons: Sortierung der Liste nach bestimmten Kriterien.
  • UpdatePerson: Bestehendes Objekt finden, validieren, Daten aktualisieren und zurückgeben.
  • DeletePerson: Objekt finden und aus der Liste entfernen.

Dieses Tutorial dient als Grundlage für sauberes und effektives Unit Testing in deinen .NET-Projekten!


Kategorien: Keine
Zuletzt aktualisiert am 22.02.2026 20:30